home *** CD-ROM | disk | FTP | other *** search
- **************************** SYMPHONY Ver. 1.00 *************
-
- ;Making SYMPHONY ver 1.00 to run with out SYMPHONY'S master disk -
- ;unprotecting it:
- ;
- ;A>REN SYMPHONY.CMP SYMPHONY.XXX
- ;A>DEBUG SYMPHONY.XXX
- ;-R ;find the segment where loaded and add 1000 to it
- ; ;DS=0DFA - xxxx=1DFA (0DFAH+1000H=1DFAH)
- ;-E xxxx:3A05 75 ;change INT 13 to INT 75H (see label SYMINT below)
- ;-W ;save changed file
- ;-Q ;exit debuger
- ;A>REN SYMPHONY.XXX SYMPHONY.CMP
- ;A>SYMPH ;execute THIS PROGRAM (it modifies the changed interupt
- ; ;back to 13H since SYMPHONY does checksum of it's self)
- ;
- ;
- ;
- ; assemble, link, exe2bin
- ;
- ;Execute this program before using SYMPHONY.
- ;There is no need to re-execute this program after exit from SYMPHONY, in
- ;order to use the SYMPHONY again, since it is a resident program
- ;
- ;
- ;to further examine the symphony for possibly other way to solve this, using
- ;DEBUG, do:
- ;A>DEBUG SYMPHONY.EXE
- ;-G2
- ;-T3
- ;-G8A40
- ;-T ;at this point you will find the the subroutine that fills
- ; ;location ds:8735 with n and int 13 (the second one) which
- ; ;reads the serial number from flopy disk in A. Zeroing 8735
- ; ;fools the symphony, and prevents it from testing for special
- ; ;track/sector structure on the flopy. If the location 8735 is
- ; ;not zeroed, debugging will not be possible after IP 8A4D,
- ; ;since INT 3 will be modified by SYMPHONY.
- ;
-
- SYMINT EQU 75H ;interupt to use
-
- SYMFLG EQU 8735H ;see above for info
-
- CSEG SEGMENT
- ASSUME CS:CSEG,DS:CSEG
- ORG 100H
- PROGRA: XOR AX,AX
- MOV ES,AX ;set to segment 0 (interupt table)
- XOR DX,DX
- MOV AL,SYMINT ;interupt number
- MOV CX,4 ;get position in interupt table
- MUL CX
- MOV BX,AX
- TEST WORD PTR ES:[BX],0 ;test if set?
- JZ DOIT ;no, go set it
- INT 20H ;exit to dos with out mod
-
- DOIT: ;get interupt routine address
- MOV word ptr ES:[BX],offset corc ;store it at the apropriate int address
- MOV ES:[BX+2],CS ;also store the segment
- MOV DX,5+16 ;lenght of this pgm in segments
- MOV AX,3103H ;exit & stay resident
- INT 21H
-
- ;this is the actual interupt
- CORC: CLI
- PUSH ES ;save all used registers
- PUSH BP
- PUSH BX
- MOV BP,SP
- MOV ES,[BP+8] ;get calling segment from stack
- MOV BX,[BP+6] ;get calling address from stack
- DEC BX ;back up one
- MOV BYTE PTR ES:[BX],13H ;store interupt 13h there
- MOV BYTE PTR DS:SYMFLG,0 ;zero out the flopy test flag
- POP BX ;restore registers
- POP BP
- POP ES
- STI
- IRET ;back to symphony
-
- CSEG ENDS
- END PROGRA
-
- **************************** SYMPHONY Ver. 1.00 *************
-
-
- Here is the "ENGLISH" version of the Symphony Unprotect procedure:
-
- 1. Rename the program
- REN SYMPHONY.CMP SYMPHONY.XXX
-
- 2. Type DEBUG SYMPHONY.XXX
-
- 3. After the - prompt appears, type R and press Enter
-
- Look at the value displayed for the DS register (left hand, second line)
- Whatever the value is, add 1000 to it. For example, if the DS contains
- 05DF, add 1000 to make it 15DF. I will refer to this new value as yyyy
- in the next step.
-
- 4. Type E yyyy:3A05 75 press Enter
-
- 5. Type W press Enter
-
- 6. Type Q press Enter
-
- 7. Rename the program back to the original name
-
- REN SYMPHONY.XXX SYMPHONY.CMP
-
-
- Now, BEFORE you run the SYMPHONY program, run the program in this Library
- call SYMPH.COM. This need only be run ONCE after each boot. If you want,
- you may place it in your AUTOEXEC.BAT file. It uses Interrupt 75H which
- should not conflict with other programs (NOTE.. this may not be true on the
- 3270PC).
-
- After running SYMPH.COM, you may run your patched version of SYMPHONY
- without the need for the master diskette.
-
- The other files in this library are:
-
- The original unprotection scheme which required you to assemble a program.
- The assembler SYMPH.COM.
-
- Good Luck.
- nged file
- ;-Q ;exit debuger
- ;A>REN SYMPHONY.XXX SYMPHONY.CMP
- ;A>SYMPH ;execute THIS PROGRAM (it modifies the changed interupt
- ; ;back to 13H since SYMPHONY does checksum of it's self)
- ;
- ;
- ;
- ; assemble, link, exe2bin
- ;
- ;Execute this program before using SYMPHONY.
- ;There is no need to re-execute this program after exit from SYMPHONY, in
- ;order to use the SYMPHONY again, since it is a resident program
- ;
- ;
- ;to further examine the symphony for possibly other way to solve this, using
- ;DEBUG, do:
- ;A>DEBUG SYMPHONY.EXE
- ;-G2
- ;-T3
- ;-G8A40
- ;-T ;at this point you will find the the subroutine that fills
- ; ;location ds:8735 with n and int 13 (the second one) which
- ; ;reads the serial number from flopy disk in A. Zeroing 8735
- ; ;fools the symphony, and prevents it from testing for special
- ; ;track/sector structure on the flopy. If the location 8735 is
- ; ;not zeroed, debugging will not be possible after IP 8A4D,
- ; ;since INT 3 will be modified by SYMPHONY.
- ;
-
- SYMINT EQU 75H ;interupt to use
-
- SYMFLG EQU 8735H ;see above for info
-
- CSEG SEGMENT
- ASSUME CS:CSEG,DS:CSEG
- ORG 100H
- PROGRA: XOR AX,AX
- MOV ES,AX ;set to segment 0 (interupt table)
- XOR DX,DX
- MOV AL,SYMINT ;interupt number
- MOV CX,4 ;get position in interupt table
- MUL CX
- MOV BX,AX
- TEST WORD PTR ES:[BX],0 ;test if set?
- JZ DOIT ;no, go set it
- INT 20H ;exit to dos with out mod
-
- DOIT: ;get interupt routine address
- MOV word ptr ES:[BX],offset corc ;store it at the apropriate int address
- MOV ES:[BX+2],CS ;also store the segment
- MOV DX,5+16 ;lenght of this pgm in segments
- MOV AX,3103H ;exit & stay resident
- INT 21H
-
- ;this is the actual interupt
- CORC: CLI
- PUSH ES ;save all used registers
- PUSH BP
- PUSH BX
- MOV BP,SP
- MOV ES,[BP+8] ;get calling segment from stack
- MOV BX,[BP+6] ;get calling address from stack
- DEC BX ;back up one
- MOV BYTE PTR ES:[BX],13H ;store interupt 13h there
- MOV BYTE PTR DS:SYMFLG,0 ;zero out the flopy test flag
- POP BX ;restore registers
- POP BP
- POP ES
- STI
- IRET ;back to symphony
-
- CS
-
- **************************** SYMPHONY Ver. 1.1 *************
-
- Suppressing the Serial Number Search on Drive A:
- for Symphony 1.1
-
- NOTE: THE METHODS DESCRIBED BELOW APPLY ONLY TO THE VERSION OF SYMPHONY
- 1.1 PRODUCED BY THE "COPYIIPC" ARCHIVAL BACKUP PROGRAM. DO NOT ATTEMPT
- THE FOLLOWING STEPS IF YOU HAVE NOT BACKED-UP UP YOUR SYMPHONY 1.1
- PROGRAM DISK WITH COPYIIPC.
-
- A number of people are under the impression that Symphony 1.1 must
- still search for the serial number of the key disk even after having
- used COPYIIPC to make a backup copy that will run from a hard disk.
-
- This is not necessarily true, and it proves that it pays to read the
- documentation that programs come with. COPYIIPC includes a program
- called NOKEY which, if executed prior to running Symphony 1.1, will
- prevent the serial number search to drive A:. If fact, NOKEY even
- supplies a serial number of 0's for Symphony to display on the opening
- screen.
-
- But even if you use NOKEY, you may still encounter problems. There
- is a situation in which NOKEY will not work properly. If you use
- Sidekick, the "ACCESS" program to start Symphony 1.1 together with NOKEY
- you will get a message "cannot find file COMMAND.COM". You have to stop
- using either NOKEY or ACCESS to run Symphony 1.1 successfully from a
- hard disk.
-
- Luckily there is a way to get aroung this problem. As a minor side
- benefit, you will no longer need to use NOKEY to stop the serial number
- search. You will be making a slight modification to the file
- "SYMPHONY.EXE". Note that this file is created by COPYIIPC. Do not
- modify any other file!
-
- Follow the DEBUG instructions below. After you finish, Symphony 1.1
- will not go to drive A:. Since Copyiipc has already removed the
- Softguard protection, this means Symphony 1.1 is usable from a hard disk
- without any dependence on your floppy drive.
-
- -------------------------------------------------------------------
- C>copy symphony.exe symphony.bak (make a backup, just in case)
-
- C>ren symphony.exe symphony.xyz
-
- C>debug symphony.xyz
- -d 0af4 0af5 ;display locations 0af4-0af5
- XXXX:0AF4 CD 13 ;if you don't see exactly this, don't continue
- -e 0af4 90 90 ;NOP out the disk read instruction
- -e 0afb 90 90 ;cause "serial # not found" msg. to be printed
- -w ;write the modified file
- Writing 1AD1 bytes
- -q
- C>ren symphony.xyz symphony.exe
- --------------------------------------------------------------------
-
- Be sure to stop using NOKEY, since it is no longer required with the
- above modification.